package com.htthorizon.model.service;

import java.util.List;

import cn.hutool.core.date.DateTime;
import com.github.pagehelper.Page;
import com.htthorizon.common.core.web.page.TableDataInfo;
import com.htthorizon.model.domain.ModelInfo;
import com.htthorizon.model.response.ModelMessageVo;
import com.htthorizon.model.response.ModelSpecialityDto;
import com.htthorizon.system.api.model.ModelInfoReq;

/**
 * 模型信息Service接口
 *
 * @author ht
 * @date 2023-11-15
 */
public interface IModelInfoService
{
    /**
     * 查询模型信息
     *
     * @param id 模型信息主键
     * @return 模型信息
     */
    public ModelInfo selectModelInfoById(Long id);

    /**
     *  按专业域分组统计
     * @param modelInfo
     * @return
     */
    public List<ModelSpecialityDto> selectModelInfoGroupBySpeciality(ModelInfo modelInfo);

    /**
     * 查询模型信息列表
     *
     * @param modelInfo 模型信息
     * @return 模型信息集合
     */
    public List<ModelInfo> selectModelInfoList(ModelInfo modelInfo);

    /**
     * 新增模型信息
     *
     * @param modelInfo 模型信息
     * @return 结果
     */
    public int insertModelInfo(ModelInfoReq modelInfo);

    /**
     * 修改模型信息
     *
     * @param modelInfo 模型信息
     * @return 结果
     */
    public int updateModelInfo(ModelInfoReq modelInfo);

    /**
     * 更改模型使用次数
     * @param id 模型ID
     * @return
     */
    public int updateModelInfoUseCount(Long id);

    /**
     * 批量删除模型信息
     *
     * @param ids 需要删除的模型信息主键集合
     * @return 结果
     */
    public int deleteModelInfoByIds(Long[] ids);

    /**
     * 删除模型信息信息
     *
     * @param id 模型信息主键
     * @return 结果
     */
    public int deleteModelInfoById(Long id);

    List<ModelInfo> list();

    List<ModelInfo> queryTimeLimit(DateTime date, DateTime lastMonth);

    boolean checkModelInfo(ModelInfoReq modelInfo);

    TableDataInfo selectModelInfoList2(ModelInfo modelInfo, Page<ModelMessageVo> pages, TableDataInfo tableDataInfo);
}
